package oraloganalyzer.views;
import oraloganalyzer.model.OraLineError;
import oraloganalyzer.model.ParsingResult;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
public class ErrorListTableView extends ErrorListView implements IErrorListColumns
{
private TableViewer tableViewer;
public ErrorListTableView()
{
super();
}
public void createPartControl(Composite parent)
{
GridData gridData = new GridData();
gridData.verticalAlignment = GridData.FILL;
gridData.horizontalSpan = 3;
gridData.grabExcessHorizontalSpace = true;
gridData.grabExcessVerticalSpace = true;
gridData.horizontalAlignment = GridData.FILL;
tableViewer = new TableViewer(parent, SWT.FULL_SELECTION | SWT.BORDER);
tableViewer.setLabelProvider(super.labelProvider);
tableViewer.setContentProvider(new ArrayContentProvider());
tableViewer.getControl().setLayoutData(gridData);
registerListeners();
Table table = tableViewer.getTable();
table.setHeaderVisible(true);
table.setLinesVisible(true);
TableColumn zeileColumn = new TableColumn(table, SWT.LEFT, ZEILE);
zeileColumn.setText("Zeile");
zeileColumn.setToolTipText("Position des Fehlers innerhalb des Logfiles");
zeileColumn.setWidth(70);
zeileColumn.setMoveable(true);
zeileColumn.setResizable(true);
zeileColumn.addSelectionListener(new SortSelectionAdapter(tableViewer, ZEILE));
TableColumn codeColumn = new TableColumn(table, SWT.LEFT, FEHLERCODE);
codeColumn.setText("Fehlercode");
codeColumn.setToolTipText("Oracle-Fehlercode");
codeColumn.setWidth(80);
codeColumn.setMoveable(true);
codeColumn.setResizable(true);
codeColumn.addSelectionListener(new SortSelectionAdapter(tableViewer, FEHLERCODE));
TableColumn meldungColumn = new TableColumn(table, SWT.LEFT, FEHLERMELDUNG);
meldungColumn.setText("Fehlermeldung");
meldungColumn.setToolTipText("Inhaltliche Beschreibung des Fehlers");
meldungColumn.setWidth(500);
meldungColumn.setMoveable(true);
meldungColumn.setResizable(true);
meldungColumn.addSelectionListener(new SortSelectionAdapter(tableViewer, FEHLERMELDUNG));
TableColumn nrColumn = new TableColumn(table, SWT.LEFT, LFD_NR);
nrColumn.setText("LfdNr");
nrColumn.setToolTipText("Laufende Nummer");
nrColumn.setWidth(50);
nrColumn.setMoveable(true);
nrColumn.setResizable(true);
nrColumn.addSelectionListener(new SortSelectionAdapter(tableViewer, LFD_NR));
this.getViewSite().getPage().getWorkbenchWindow().addPerspectiveListener(this);
}
public void setFocus()
{
this.tableViewer.getControl().setFocus();
}
public void setInput(ParsingResult input)
{
this.data = input;
tableViewer.getTable().clearAll();
tableViewer.refresh();
tableViewer.setInput(input.resultsToArray());
//tableViewer.add(input.resultsToArray());
// Color lfdNrColor = Display.getCurrent().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND);
// for (TableItem item : tableViewer.getTable().getItems())
// {
// item.setBackground(ErrorListLabelProvider.LFD_NR, lfdNrColor);
// }
}
public void clearData()
{
this.data = null;
tableViewer.getTable().clearAll();
tableViewer.refresh();
}
private final void registerListeners()
{
tableViewer.addSelectionChangedListener(new ISelectionChangedListener()
{
public void selectionChanged(SelectionChangedEvent event)
{
if (!(event.getSelection() instanceof IStructuredSelection))
return;
IStructuredSelection selection = (IStructuredSelection) event
.getSelection();
if (selection.size() != 1)
return;
Object element = selection.getFirstElement();
if (!(element instanceof OraLineError))
return;
OraLineError ole = (OraLineError) element;
editor.selectAndReveal(ole.getOffset(), ole.getError()
.getErrType().getErrCodeLength());
}
});
}
}